package com.qdlc.p2p.dal.dao;

import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.Message;
import com.qdlc.p2p.dal.model.MessageModel;

/**
 * 站内信Dao
 * 
 * @author linya
 * 
 */
public interface MessageDao { 
	
	/**
	 * 插入记录
	 * @param message
	 */
	Message insert(Message message);
	
	/**
	 * 修改记录
	 * @param message
	 */
	void update(Message message);
	
	/**
	 * 收件箱未读计数
	 * 
	 * @param userId
	 * @return
	 */
	int unreadCount(long receiveUser);

	/**
	 * 收件箱列表
	 * 
	 * @param receive_user
	 * @param start
	 * @param pernum
	 * @return
	 */
	PageDataList<MessageModel> receiveList(long receiveUser, int startPage);

	/**
	 * 发件箱列表
	 * 
	 * @param sent_user
	 * @param start
	 * @param pernum
	 * @return
	 */
	PageDataList<MessageModel> sentList(long sentUser, int startPage);

	
	/**
	 * 根据title模糊查询（分页查询）
	 * @param title
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	public PageDataList<Message> findByTitle(String title, int pageNumber, int pageSize);
	
	
	/**
	 * 获取
	 * 
	 * @param id
	 * @return
	 */
	Message find(long id, long userId);

	/**
	 * 标记为已读
	 * 
	 * @param id
	 * @param userId
	 */
	void setRead(long id, long receiveUser);

	/**
	 * 批量删除收件箱信息
	 * 
	 * @param ids
	 */
	void delReceiveList(Object[] ids, long receiveUser);

	/**
	 * 批量删除发件箱信息
	 * 
	 * @param ids
	 */
	void delSentList(Object[] ids, long sentUser);

	/**
	 * 批量设置已读
	 * 
	 * @param ids
	 */
	void setReadList(Object[] ids, long receiveUser);

	/**
	 * 批量设置未读
	 * 
	 * @param ids
	 */
	void setUnreadList(Object[] ids, long receiveUser);

}
